<?	
	/* Se asegura que el archivo es incluido por el index */
	defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );  
		$this->oTmpObject = new Componente_frm( $this );
	
	class Componente_frm extends Frm
	{
	function setValue ( $ncComponente )
		{
			$cSql = "SELECT  *
				FROM gtComponente
				WHERE ncComponente = '$ncComponente' ";
			$aDatos = $this->oDatabase->getArray($cSql);	
			$aDatos[cModuloAccion] = $aDatos[cModulo] . '|' . $aDatos[cAccion];	
			$this->setFieldsArray ( $aDatos );
			$this->armarParametros();
		}
	function Componente_frm( &$oModule )
		{
			$this->Frm( $oModule );
			//Crea los Objetos de los campos de edicion
			$this->aFields['ncComponente']			= new Input( "ncComponente", "ncComponente", '', false, true );
			$this->aFields['ncEstadoPublicacion']	= new InputList( "Estado" , "ncEstadoPublicacion" );
			$this->aFields['cdComponente']	= new InputText( "Nombre","cdComponente" );
			$this->aFields['cModuloAccion']	= new InputList( "Accion","cModuloAccion" );
			$this->aFields['cClass']				= new InputText( "Estilo","cClass" );
			$this->aFields['cListaParam']		= new Input( '', 'cListaParam', '' , false, true);
			$this->aFields['cParametros']		= new InputText( "Parametros","cParametros" );
			$this->armarParametros();
		}	
	function armarParametros()
	{
		list( $cModule, $cAccion ) = explode('|', $this->aFields['cModuloAccion']->getValue() );
		if ( $cModule &&  $cAccion  ) 
		{
			$aVariables = stringParametersToArray( $this->aFields[cParametros]->getValue()  );
			$oModule =& loadModule($cModule );
			$oModule->loadTemplatePage($cAccion);
			foreach($oModule->aDatos[$cAccion][aParametros] as  $aParametro)
			{
				$cListaParam .= $aParametro[0] . ',';
				if ( is_array($aParametro[2]) )
				{
					$this->aFields[$aParametro[0]]		= new InputList( $aParametro[1], $aParametro[0], $aVariables[$aParametro[0]] );
					$this->aFields[$aParametro[0]]->setMatrix($aParametro[2]);
				} else if ( $aParametro[2] != '' ) 
				{
					$this->aFields[$aParametro[0]]		= new InputList( $aParametro[1], $aParametro[0], $aVariables[$aParametro[0]] );
					if ( substr($aParametro[2], 0, 6) != 'SELECT' )
					{
						foreach( explode ( ',', $aParametro[2] ) as $cItem ) 
						{
							list( $codigo, $descripcion )  = explode ( ':', $cItem  );
							$this->aFields[$aParametro[0]]->addOption($codigo, $descripcion);
						}
					} else {
						$this->aFields[$aParametro[0]]->setMatrix($this->oDatabase->getMatrix($aParametro[2]) );
					}
				} else
					$this->aFields[$aParametro[0]]		= new InputText( $aParametro[1], $aParametro[0], $aVariables[$aParametro[0]] );
			}
			$this->aFields['cListaParam']->setValue( $cListaParam );
			$this->aFields['cParametros']->setHidden();
		}
	}
	function setLevel( $nLevel)
		{
			switch ( $nLevel )
			{
				case 1: 
					$this->aInput = array ('ncComponente' );
					break;
				case 2: 
					//$this->aInput = array ('ncComponente','ncEstadoPublicacion','cdComponente','cModuloAccion','cParametros','cClass' );
					break;
			}
		}
	function initializeForm()
		{
			// Si viene el Ubicacion hace el retrieve
				if ( $this->isRetrievable() && $this->aFields['ncComponente']->getValue() )
				{
					$this->setValue( $this->aFields['ncComponente']->getValue() );
				}
			// Configura el Titulo
				$this->setLabel( "Componente" );	
			return true;
		}
	function initializeField( $cField , &$oField )
		{			
			switch ( $cField )
			{
				case 'ncEstadoPublicacion':
					$cSql = "SELECT ncEstadoPublicacion, cdEstadoPublicacion FROM gcEstadoPublicacion";
					$oField->setMatrix($this->oDatabase->getMatrix($cSql));
					$oField->setMandatory($this->isMandatory());
				break;
				case 'cModuloAccion':
					global $aInstallModules;
					foreach ( $aInstallModules as $cKey => $aInstallModule )
					{
						if ( $cKey != 'base' )
						{
							$oModule =& loadModule($cKey );
							$aData = $oModule->getTemplatesArray();
							foreach($aData as $cNombre)
								$oField->addOption( $cKey. '|' . $cNombre,  $cKey  . ' > ' . $cNombre);
						}
					}
					$oField->setOnChangeAutoSubmit($this);
				break;
			}
 		}
	}
?>